package dao

import (
	"time"
)

// 这是 SubjectArticle 的全局公开dao对象，被service层调用!
var SubjectArticleDao = subjectArticleDao{}

// 专栏文章列表
// 这是 subject_article表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type SubjectArticle struct {
	Id        int32     `json:"id" form:"id" db:"id" v:"id"`
	Sid       int32     `json:"sid" form:"sid" db:"sid" v:"sid"`                             // 专栏ID
	ArticleId int32     `json:"article_id" form:"article_id" db:"article_id" v:"article_id"` // 文章ID
	Status    int8      `json:"status" form:"status" db:"status" v:"status"`                 // 状态:0-新投稿(待审核);1-上线；2-下线(删除)
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}

// 注意:这是 SubjectArticle 的私有dao对象，只能在dao层内使用!
type subjectArticleDao struct {
	InsertTemplate func(arg SubjectArticle) (int64, error)                //插入一条记录
	UpdateTemplate func(arg SubjectArticle) (int64, error)                //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                          `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (SubjectArticle, error)                 `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg SubjectArticleList) ([]SubjectArticle, error) //模糊分页查询
}

/*
// 这是 subject_article 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type SubjectArticlePostman struct {
id
sid
article_id
status
created_at

}*/

// 这是 subject_article 表的批量请求参数
type SubjectArticleReq struct {
	List []SubjectArticle `json:"list" form:"list"`
}

// 这是 subjectArticleDao.List()方法的请求参数
type SubjectArticleList struct {
	Page
}
